package com.qwz.example;

/**
 * @author Qiuwuzhi
 * @version V1.0
 * @Description: 登录控制的模板
 * @Package com.qwz.example.LoginTemplate
 * @date 2019/12/24 16:43
 */
public abstract class LoginTemplate {
    /**
     * 判断登录数据是否正确，也就是是否登录成功
     * @param model
     * @return
     */
    public final boolean login(LoginModel model) {
        //根据登录人员的编号去获取相应的数据
        LoginModel loginUser = this.findLoginUser(model.getLoginId());
        if (loginUser != null) {
            //密码加密
            String encryptPwd = this.encryptPwd(model.getPwd());
            model.setPwd(encryptPwd);
            //判断是否匹配
            return this.match(model, loginUser);
        }


        return false;
    }

    /**
     * 判断用户填写的登录数据和存储中对应的数据是否匹配得上
     * @param model
     * @param loginUser
     * @return
     */
    protected boolean match(LoginModel model, LoginModel loginUser) {
        if (model.getLoginId().equals(loginUser.getLoginId()) && model.getPwd().equals(loginUser.getPwd())) {
            return true;
        }
        return false;
    }

    /**
     * 对密码数据进行加密
     * @param pwd
     * @return
     */
    protected String encryptPwd(String pwd) {
        return pwd;
    }

    /**
     * 根据登录编号来查找和获取存储中相应的数据
     * @param loginId
     * @return
     */
    protected abstract LoginModel findLoginUser(String loginId);
}
